#ifndef EVENT_H
#define EVENT_H
/*
    事件处理函数，处理按钮，编码器发送到队列的消息，
    根据消息内容进行实现相应的功能
*/
#include <Arduino.h>
#include "freertos/FreeRTOS.h"
#include <freertos/queue.h>

// 事件类型定义
typedef enum {
    EVENT_ENCODER_CLICK,
    EVENT_ENCODER_DOUBLE_CLICK,
    EVENT_ENCODER_ROTATE,
    EVENT_BUTTON_LONG_PRESS
} ButtonEventType;

// 事件结构体
typedef struct {
    ButtonEventType type;
    int value;
    unsigned long timestamp;
} ButtonEvent;

// 全局变量声明
extern QueueHandle_t buttonEventQueue;
extern volatile bool need_screen_refresh;
extern int encoderValue;

// 初始化事件系统
void init_events();

// 事件处理任务
void eventProcessingTask(void *pvParameters);

// 事件处理函数
void handleButtonEvent(ButtonEvent *evt);

// 编码器旋转处理
void handleEncoderRotation(int value);

#endif